exports.config = function (config) {
    // summary:
    //		This module provides bootstrap configuration for running dojo in node.js
    // any command line arguments with the load flag are pushed into deps
    for (var deps = [], args = [], i = 0; i < process.argv.length; i++) {
        var arg = (process.argv[i] + "").split("=");
        if (arg[0] == "load") {
            deps.push(arg[1]);
        } else {
            args.push(arg);
        }
    }
    var fs = require("fs");
    // make sure global require exists
    //if (typeof global.require=="undefined"){
    //	global.require= {};
    //}
    // reset the has cache with node-appropriate values;
    var hasCache = {
        "host-node"            : 1,
        "host-browser"         : 0,
        "dom"                  : 0,
        "dojo-has-api"         : 1,
        "dojo-xhr-factory"     : 0,
        "dojo-inject-api"      : 1,
        "dojo-timeout-api"     : 0,
        "dojo-trace-api"       : 1,
        "dojo-dom-ready-api"   : 0,
        "dojo-publish-privates": 1,
        "dojo-sniff"           : 0,
        "dojo-loader"          : 1,
        "dojo-test-xd"         : 0,
        "dojo-test-sniff"      : 0
    };
    for (var p in hasCache) {
        config.hasCache[p] = hasCache[p];
    }
    var vm = require('vm'), path = require('path');
    // reset some configuration switches with node-appropriate values
    var nodeConfig = {
        baseUrl        : path.dirname(process.argv[1]),
        commandLineArgs: args,
        deps           : deps,
        timeout        : 0,
        // TODO: really get the locale
        locale         : "en-us",
        loaderPatch: {
            log: function (item) {
                // define debug for console messages during dev instead of console.log
                // (node's heavy async makes console.log confusing sometimes)
                var util = require("util");
                util.debug(util.inspect(item));
            },
            eval: function (__text, __urlHint) {
                return vm.runInThisContext(__text, __urlHint);
            },
            injectUrl: function (url, callback) {
                try {
                    vm.runInThisContext(fs.readFileSync(url, "utf8"), url);
                    callback();
                } catch (e) {
                    this.log("failed to load resource (" + url + ")");
                    this.log(e);
                }
            },
            getText: function (url, sync, onLoad) {
                // TODO: implement async and http/https handling
                onLoad(fs.readFileSync(url, "utf8"));
            }
        }
    };
    for (p in nodeConfig) {
        config[p] = nodeConfig[p];
    }
};
